﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Smile.Mvvm.Service
{
    /// <summary>
    ///     Service interface which manage interaction with operating system lock screen.
    /// </summary>
    public interface ILockScreenService
    {
        // @Poperties
        bool CanSetLockScreen { get; }

        // @Members function
        /// <summary>Prompt the authorization to set application as a lockscreen.</summary>
        ///
        /// <returns></returns>
        Task<bool> AuthorizeLockScreenAsync();

        /// <summary>
        ///     Sets a new image to the lock screen with a remote image (asynchronous).
        /// </summary>
        ///
        /// <param name="uriString">The URI string to the image.</param>
        void SetLockScreenAsync(string uriString);

        /// <summary>
        ///     Sets a new image to the lock screen with a remote image (asynchronous).
        /// </summary>
        ///
        /// <param name="uri">URI of the image.</param>
        void SetLockScreenAsync(Uri uri);

        /// <summary>Sets a new image to the lock screen (asynchronous).</summary>
        ///
        /// <param name="buffer">The byte array.</param>
        void SetLockScreenAsync(byte[] buffer);
    }
}
